// ds1302.h
#ifndef DS1302_H
#define DS1302_H

#include "driver/gpio.h"
#include "esp_err.h"
#include <time.h>

// DS1302寄存器地址定义
#define DS1302_SEC      0x80    // 秒寄存器
#define DS1302_MIN      0x82    // 分寄存器
#define DS1302_HR       0x84    // 时寄存器
#define DS1302_DAY      0x86    // 日寄存器
#define DS1302_MON      0x88    // 月寄存器
#define DS1302_WEEK     0x8A    // 周寄存器
#define DS1302_YR       0x8C    // 年寄存器
#define DS1302_WP       0x8E    // 写保护寄存器
#define DS1302_TC       0x90    // 涓流充电寄存器

// 初始化DS1302
esp_err_t ds1302_init(void);

// 读取DS1302寄存器
uint8_t ds1302_read_register(uint8_t address);

// 写入DS1302寄存器
void ds1302_write_register(uint8_t address, uint8_t data);

// 设置DS1302时间（从Unix时间戳转换）
esp_err_t ds1302_set_time_from_timestamp(time_t timestamp);

// 获取DS1302时间（转换为Unix时间戳）
esp_err_t ds1302_get_timestamp(time_t *timestamp);

// 初始化DS1302为默认时间（2025-05-18 00:00:00）
esp_err_t ds1302_initialize_time(void);

#endif // DS1302_H